Skip to main content

Beispiel: Verwenden der Bibliothek OPC UA PubSub SL

ProduktCODESYS OPC UA PubSub SL

Das Beispiel OPC UA PubSub SL Example.project zeigt, wie die Bibliothek OPC UA PubSub SL verwendet wird, um Nachrichten über das von OPC UA Foundation definierte Pub/Sub-Protokoll auszutauschen.

Das Package enthält ein zweites Beispiel PubSubDataSet.project. Es zeigt, wie die Bibliothek OPC UA PubSub SL verwendet wird, um verschiedene Datensätze bereitzustellen und mit GVL-Instanzen zu verbinden.

Beschreibung

Die Kommunikation über das OPC UA Pub/Sub-Protokoll stellt neben der Client/Server-Kommunikation eine weitere Möglichkeit bereit, um Daten gmäß den Regeln der OPC UA Foundation zwischen den Teilnehmern eines Netzwerks auszutauschen.

Die Struktur der Daten (DataSet) ist frei definierbar und wird im Voraus zwischen Sender und Empfänger vereinbart. Dadurch entfällt der Transport von zusätzlichen (Meta-)Daten. Der Datentransfer erfolgt mit Hilfe der Bibliothek OPC UA PubSub SL über UDP/IP nach den für UADP definierten Regeln.

Ein sogenannter "Publisher" veröffentlicht seine Daten an eine ihm unbekannte Anzahl von "Subscribern". Sender und Empfänger kennen sich also nicht. Daher hat die Anzahl der Empfänger auch keine Rückwirkung auf den Sender. Eine Rückmeldung an den Sender, ob seine Nachrichten die Empfänger erreicht haben, kann prinzipbedingt nicht über das Protokoll erfolgen. Bei Bedarf muss eine solche Rückmeldung applikationsspezifisch verwaltet werden.

Die Daten werden in einem binären Format nach den Regeln der OPC UA Foundation übertragen. Die Konvertierung der IEC-Datentypen in die entsprechenden OPC UA-Datentypen und umgekehrt wird von der Bibliothek OPC UA PubSub SL übernommen.

Die Implementierung folgt folgenden Profilen:

  • Publisher: PubSub Publisher UADP Periodic Fixed Settings

  • Subscriber: PubSub Subscriber UADP Periodic Fixed Settings

Die Nachrichtenlänge ist auf 1500 Bytes (MTU) begrenzt ("Chunked NetworkMessages" werden nicht unterstützt). Solange die Regeln für ein "Time Sensitive Network" noch nicht zur Verfügung stehen, können keine harten Echtzeitbedingungen erfüllt werden. Die Implementierung der OPC UA PubSub SL-Bibliothek zielen jedoch darauf ab, den Jitter so gering wie möglich zu halten.

Die Bibliothek enthält folgende Funktionsbausteine:

  • DataSet:

    Definiert eine DataSet-Message

  • Configuration:

    Verwaltet gemeinsame Ressourcen wie beispielsweise Connection oder Group

  • RootDiagnostics:

    Informiert mit übergeordneten Diagnosedaten

  • Connection:

    Verwaltet die Verbindung zu Publisher und Subscriber

  • ConnectionDiagnostics:

    Informiert mit Diagnosedaten über die Verbindung (Connection)

  • ReaderGroup:

    Verwaltet Reader-Bausteine (Bildung einer Network-Message aus DataSet-Messages)

  • ReaderGroupDiagnostics:

    Informiert mit Diagnosedaten über die ReaderGroup

  • Reader:

    Verwaltet den DataSet-Baustein (Subscriber)

  • ReaderDiagnostics:

    Informiert mit Diagnosedaten über einen Reader-Baustein

  • WriterGroup:

    Verwaltet Writer-Bausteine (Bildung einer Network-Message aus DataSet-Messages)

  • WriterGroupDiagnostics:

    Informiert mit Diagnosedaten über die WriterGroup

  • Writer:

    Verwaltet einen DataSet-Baustein (Publisher)

  • WriterDiagnostics:

    Informiert mit Diagnosedaten über einen Writer-Baustein

_example_img_opc_ua_blocks.png

Unterstützte Funktionalität

  • Publish/Subscribe von Nachrichten gemäß OPC 10000-14: OPC Unified Architecture Part 14: PubSub Release 1.04

  • Maximale Größe einer Network-Message: 1500 Bytes

  • Die aktuelle Packetgröße und Größe der Nutzdaten (Payload) ist über die Konfiguration der jeweiligen ReaderGroup/WriterGroup und DataSet-Bausteine konfigurierbar .

  • Unterstützung mit einer Hintergrundtask für den jeweiligen Connection-Baustein

  • Folgende Profile werden unterstützt:

    • Publisher: PubSub Publisher UADP Periodic Fixed Settings

    • Subscriber: PubSub Subscriber UADP Periodic Fixed Settings

Weitere Informationen

Die Applikation Device_1 veranschaulicht das Lesen von NetworkMessage.

Die Applikation Device_2 zeigt, wie Nachrichten über die enthaltenen Funktionsbausteine gesendet werden.

  1. Hardware

    1. Sie benötigen zwei CODESYS-Steuerungen, die über ein Netzwerk verbunden sind, das UDP Multicast unterstützt.

    2. Passen Sie im Projekt die Gerätekonfiguration an die Geräte an, indem Sie Device_1 und Device_2 auf die verwendete Hardware aktualisieren.

  2. Anpassungen im Projekt

    1. Stellen Sie die IP-Adressen in der GVL GlobalIP auf die von Ihnen konfigurierte Hardware ein. Die GVL finden Sie im Bereich POUs.

    2. Setzen Sie die Multicast-Adresse auf eine freie Adresse in Ihrem Netzwerk.

      Hinweis: Wenn Sie sich nicht in einem privaten Netzwerk befinden, lassen Sie sich von Ihrem Netzwerk-Administrator eine freie Adresse zuweisen.

    3. Legen Sie den Port fest. Der voreingestellte Port 4840 ist der standardmäßig empfohlene Port für OPC UA PubSub.

  3. Loggen Sie sich auf beiden Steuerungen ein und starten Sie die Applikationen.

  4. Starten Sie sowohl Sender als auch Empfänger:

    Device_2: PLC_PRG.xEnable := TRUE

    Device_1: Communication_PRG.xEnable := TRUE

    Sie sollten nun auf der Empfängerseite sehen, wie sich die Werte des Sinus ändern. Sie können die anderen Werte im Sender manuell ändern und die Änderungen im Empfänger sehen.

Prozedur. Vorschlag zur Erweiterung des Beispiels

Fügen Sie eine Variable zum bereits übertragenen DataSet hinzu.

  1. Erweitern Sie SensorDataSet._aIndex um einen Eintrag. Wählen Sie einen beliebigen Datentyp.

  2. Passen Sie in SensorDataSet.Init die Version von DataSet an, indem Sie den Eintrag für das Datum aktualisieren.

  3. Erstellen Sie im Programm PLC_PRG des Senders eine Variable des gewählten Datentyps. Weisen Sie der Variablen den Wert txSensorDataSet.PrepareValues zu.

  4. Wiederholen Sie diesen Schritt auf der Empfängerseite in rxSensorDataSet.PrepareValues. Erstellen Sie auch hier zuvor eine neue Variable des gleichen Typs.

  5. Führen Sie einen einem erneuten Download aus.

    Die neue Variable sollte mit übertragen werden.

Beispiel 1. Beispiel einer typischen Konfiguration
_example_img_opc_ua_pubsub_config.png


Systemvoraussetzungen und Einschränkungen

Programmiersystem

CODESYS Development System Version 3.5.17.0 oder höher

Laufzeitsystem

CODESYS Control Win Version 3.5.14.0

Anmerkung

Je nach Ausstattung des jeweiligen Laufzeitsystems können die Nachrichten per Unicast, Multicast oder Broadcast versendet werden.

Unterstützte Plattformen/Geräte

Tipp

Verwenden Sie das Projekt Device Reader, um die von der Steuerung unterstützten Funktionen zu ermitteln. Device Reader ist kostenlos im CODESYS Store International erhältlich.

Einschränkungen

  • Die maximale Länge einer Networkmessage beträgt 1500 Bytes.

    (Chunked NetworkMessages not supported)

  • Der Übertragungszeipunkt wird über die Taskkonfiguration bestimmt.

    Der Parameter udiPublishingInterval hat keine Wirkung.

Zusatzkomponenten

CODESYS OPC UA PubSub SL

Hinweis

_example_icon.png DOWNLOAD Projekt